public class code2 {
    // 这道题目的思路是，先成环，在再特定位置进行截断
    public ListNode rotateRight(ListNode head, int k) {
        if(head == null || head.next == null) {
            return head;
        }
        if(k == 0) return head;
        ListNode tail = head;
        ListNode newtail = head;
        ListNode newhead;
        int n = 1;
        // 原来的尾结点指向原来的头结点，形成环
        while(tail.next != null){
            tail = tail.next;
            // 顺带获取到链表的长度
            n++;
        }
        tail.next = head;
        // 找到断开环的位置
        for(int i = 1; i < (n - k % n); i++){
            newtail = newtail.next;
        }
        // 新的头结点指向断开环的位置
        newhead = newtail.next;
        newtail.next = null;

        return newhead;
    }
}
